package com.caioweb.osa.mb;

import static com.caio.svn.Configuracoes.TXT_DADOS;
import static com.caio.svn.Configuracoes.TXT_ESTRUTURA;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.SessionScoped;
import javax.inject.Inject;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import com.caioweb.osa.dao.HistoricoDAO;
import com.caioweb.osa.modelo.Ambiente;
import com.caioweb.osa.modelo.Historico;
import com.caioweb.osa.transacoes.interceptor.Transactional;

@SessionScoped
public class historicoDetalhadoBean implements Serializable {
	@Inject
	private Historico historico;
	@Inject
	private HistoricoDAO dao;


	private Long historicoId;
	private StreamedContent fileDados;
	private StreamedContent fileEstrutura;
	
	private List<Historico> historicos;
	private List<Ambiente> ambientes;


	public Long getHistoricoId() {
		return historicoId;
	}
	
	@Transactional
	public void setHistoricoId(Long historicoId) {
		this.historicos = new ArrayList<Historico>();
		this.historico = this.dao.buscaPorId(historicoId);
		this.historicos.add(historico);
		this.historicoId = historicoId;
		
	}
	
	
    public StreamedContent getFileEstrutura() throws FileNotFoundException {
        InputStream stream = new FileInputStream(this.historico.getArquivo()+ TXT_ESTRUTURA);  
        fileEstrutura = new DefaultStreamedContent(stream, "application/txt",  TXT_ESTRUTURA);
        return fileEstrutura;    
    }    
    
    public void setFileDados(StreamedContent file) throws FileNotFoundException {   
    	
        this.fileDados = file;    
    } 
    
    
    
    public StreamedContent getFileDados() throws FileNotFoundException {
    	 InputStream stream = new FileInputStream(this.historico.getArquivo()+ TXT_DADOS);  
         fileDados = new DefaultStreamedContent(stream, "application/txt", TXT_DADOS);
		return fileDados;
	}

	public void setFileEstrutura(StreamedContent fileEstrutura) {
		this.fileEstrutura = fileEstrutura;
	}


	

	public Historico getHistorico() {
		return historico;
	}

	public void setHistorico(Historico historico) {
		this.historico = historico;
	}

	public List<Historico> getHistoricos() {
		return historicos;
	}

	public void setHistoricos(List<Historico> historicos) {
		this.historicos = historicos;
	}
	
	public List<Ambiente> getAmbientes() {
		this.ambientes = new ArrayList<Ambiente>();
		ambientes.add(historico.getAmbiente());
		return ambientes;
	}

	public void setAmbientes(List<Ambiente> ambientes) {
		this.ambientes = ambientes;
	}

}
